﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SRD.Model.SRD.DTO;
using SRD.Model.SRD.Util;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
using System.Configuration;

namespace SRD.Model.SRD.DAO
{
    class CentroCustoDAO
    {
        DataClassesSRDDataContext bancoDados = new DataClassesSRDDataContext();
         
         public CentroCustoDAO() 
         {
             
         }
                  
         // metodo de busca por parte do nome do centro de custo         
         public IQueryable findByName(string nomeCentroCusto)
         {
             var resultado = from c in bancoDados.CENTRO_CUSTOs
                             where c.NM_CENTRO_CUSTO.Contains(nomeCentroCusto)
                             select c;
             return resultado;

         }

         public IQueryable findByEmpresaId(Int32 id)
         {
             var resultado = from c in bancoDados.CENTRO_CUSTOs
                             where c.EMPRESA_ID == id
                             select c;
             return resultado;

         }

         //metodo de busca pelo id do centro de custo
         public CENTRO_CUSTO findByID(CENTRO_CUSTO centroCusto)
         {
             var resultado = (from c in bancoDados.CENTRO_CUSTOs
                              where c.CENTRO_CUSTO_ID == centroCusto.CENTRO_CUSTO_ID
                              select c).First();

             return resultado;
         }

         //metodo para busca completa do centro de custo ordenado
         public IQueryable findAll()
         {
             var resultado = from c in bancoDados.CENTRO_CUSTOs
                             select c;

             return resultado;
         }

        // metodo para iserção do centro de custo
         public string insert(CENTRO_CUSTO centroCusto)
         {
             try
             {
                 bancoDados.CENTRO_CUSTOs.InsertOnSubmit(centroCusto);
                 bancoDados.SubmitChanges();
                 return "Inclusão realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na inclusão: " + o.Message;
             }
         }

         // metodo para atualização do setor
         public string update(CENTRO_CUSTO centroCusto)
         {
             try
             {
                 var centroCustoExistente = (from c in bancoDados.CENTRO_CUSTOs
                                       where c.CENTRO_CUSTO_ID == centroCusto.CENTRO_CUSTO_ID
                                         select c).First();
                 centroCustoExistente.NM_CENTRO_CUSTO = centroCusto.NM_CENTRO_CUSTO;
                 centroCustoExistente.ATIVO = centroCusto.ATIVO;
                 centroCustoExistente.EMPRESA_ID = centroCusto.EMPRESA_ID;
                 bancoDados.SubmitChanges();
                 return "Atualização realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na atualização: " + o.Message;
             }
         }

        // metodo para remoção do setor
         public string delete(CENTRO_CUSTO centroCusto)
         {
             try
             {
                 var centroCustoExitente = (from c in bancoDados.CENTRO_CUSTOs
                                        where c.CENTRO_CUSTO_ID == centroCusto.CENTRO_CUSTO_ID
                                        select c).First();
                 CENTRO_CUSTO cent = centroCustoExitente;
                 bancoDados.CENTRO_CUSTOs.DeleteOnSubmit(cent);
                 bancoDados.SubmitChanges();
                 return "Registro excluído com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro ao excluir: " + o.Message;
             }
         }
    }
}
